#!/usr/bin/env python3
# -*- coding: utf-8 -*-

# 1.变量可以指向函数
def add(x,y):
    return x + y

f = add # 这点有些类似js
print(f(2,3)) # 5

# 2.函数名也是变量
# add = 10
# 将函数名指向10后，就不在是个函数了
# print(add(2,3)) #TypeError: 'int' object is not callable

# 3.传入函数
# 一个能接受其他函数作为参数的函数称为高阶函数
def abs(x):
    if x >= 0:
        return x
    else:
        return -x

def add_abs(x,y,fn): # 高阶函数
    return fn(x) + fn(y)

print(add_abs(3,-7,abs)) # 10